///*  File Name	: ProkerTest.cpp
// *  Author		: Pang Jiacai
// *	 E-mail		: 823960168@qq.com
// *  Created on	: 2012-10-12
// *  Description:
// */
//
//#ifndef ProkerTest_CPP
//#define ProkerTest_CPP
//#include <stdlib.h>
//#include "Proker.h"
//#include "Player.h"
//#include "Table.h"
//#include "EngineMonitor.h"
//
//void test_proker(void)
//{
//	EngineMonitor *monitor = EngineMonitor::instance();
//	Table *table = new Table();
//	table->init(monitor);
//
//	int times = rand()%3+1;
//	std::cout<< "====shuffle_proker times:"<< times<<std::endl;
//	for(int i=0;i < times;i++)
//	{
//		table->proker().shuffle_proker();
//	}
//
//	int proker_index =0;
//
//	PlayerMap p_map;
//	std::vector<Player*> p_vec;
//	for(int i=1;i<=8;i++)
//	{
//		Player *p = new Player();
//		p->role_id(i);
//		p_vec.push_back(p);
//	}
//
//	for(int i=0;i<2;i++)
//	{
//		for(int j=0;j<8;j++)
//		{
//			p_vec[j]->card_[i]=table->proker().card_vec()[proker_index++];
//		}
//	}
//
//	for(int i=0;i<8;i++)
//	{
//		Player *player = p_vec[i];
//		std::cout<<"role_id:"<< player->role_id()<<"-"
//				<< player->card_[0]->type_<<"-"<< player->card_[1]->type_<<"-"
//				<< player->card_[0]->number_<<"-"<< player->card_[1]->number_
//				<< std::endl;
//	}
//
//	Card* pub_card[5];//公共牌
//	std::cout<<"public card:" << std::endl;
//	for(int i=0;i<5;i++)
//	{
//		pub_card[i] = table->proker().card_vec()[proker_index++];
//		std::cout<< "card-type:"<< pub_card[i]->type_
//				<< "--card-num:"<< pub_card[i]->number_<<std::endl;
//	}
//
//	std::map<int, ProcResult> result_map;
//	Player *player = NULL;
//	for (int i = 0; i < 8; i++)
//	{
//		player = p_vec[i];
//		ProcResult result;
//		if (result.make_result(player, player->card_, pub_card) != 0)
//		{
//			std::cout << "Table::end_game player error" << std::endl;
//		}
//		result_map.insert(std::pair<int, ProcResult>(player->role_id(), result));
//	}
//
//	std::vector<ProcResult> result_vec;
//	std::map<int, ProcResult>::iterator  iter = result_map.begin();
//	for (;iter != result_map.end();iter++)
//	{
//		result_vec.push_back(iter->second);
//	}
//	std::sort(result_vec.begin(),result_vec.end(),Table::cmp_result);
//
//	int reward_count = 1;
//	for (int i = 0; i < (int) (result_vec.size() - 1); i++)
//	{
//		if (!Table::is_equal(result_vec[i], result_vec[i + 1]))
//		{
//			break;
//		}
//		reward_count++;
//	}
//
//	std::cout <<"--count:"<< reward_count <<std::endl;
//
//	for(int i=0;i<(int)result_vec.size();i++)
//	{
//		ProcResult &r = result_vec[i];
//		std::cout << "---role_id:" << r.player()->role_id() << "type:"<< r.type()<<"----";
//		for (int i = 0; i < (int) r.result().size(); i++)
//		{
//			Card *c = r.result()[i];
//			std::cout << "-" << c->type_;
//		}
//		std::cout << "===";
//		for (int i = 0; i < (int) r.result().size(); i++)
//		{
//			Card *c = r.result()[i];
//			std::cout << "-" << c->number_;
//		}
//		std::cout << std::endl;
//	}
//
//	for(int i=0;i<8;i++)
//	{
//		DELETE(p_vec[i]);
//	}
//	DELETE(table);
//	DELETE(monitor);
//}
//
//
//void test_make_pool(void)
//{
//	ChipsPoolVec chips_pool;
//	IntVector chips_vec;
//	IntVector chips_record_vec;
//	std::vector<Player*> p_vec;
//	for(int i=1;i<=8;i++)
//	{
//		Player *p = new Player();
//		p->role_id(i);
//		p_vec.push_back(p);
//	}
//
//	int all_in = 190;
//	//total_chips+=all_in;
//	p_vec[0]->base_info_.total_chips = 1000;
//	p_vec[0]->chips_in_table_ = 0;
//	p_vec[0]->cur_bet_chips_ = all_in;
//	p_vec[0]->game_status_ = GAME_STATUS_ALL_IN;
//	chips_vec.push_back(all_in);
//	chips_record_vec.push_back(all_in);
//
//	all_in = 200;
//	//total_chips+=all_in;
//	p_vec[1]->base_info_.total_chips = 1000;
//	p_vec[1]->chips_in_table_ = 0;
//	p_vec[1]->cur_bet_chips_ = all_in;
//	p_vec[1]->game_status_ = GAME_STATUS_ALL_IN;
//	chips_vec.push_back(all_in);
//	chips_record_vec.push_back(all_in);
//
//	all_in = 250;
//	//total_chips+=all_in;
//	p_vec[2]->base_info_.total_chips = 1000;
//	p_vec[2]->chips_in_table_ = 0;
//	p_vec[2]->cur_bet_chips_ = all_in;
//	p_vec[2]->game_status_ = GAME_STATUS_ALL_IN;
//	chips_vec.push_back(all_in);
//	chips_record_vec.push_back(all_in);
//
//	all_in = 100;
//	//total_chips+=all_in;
//	p_vec[3]->base_info_.total_chips = 1000;
//	p_vec[3]->chips_in_table_ = 0;
//	p_vec[3]->cur_bet_chips_ = all_in;
//	p_vec[3]->game_status_ = GAME_STATUS_ALL_IN;
//	chips_vec.push_back(all_in);
//	chips_record_vec.push_back(all_in);
//
//	all_in = 220;
//	//total_chips+=all_in;
//	p_vec[4]->base_info_.total_chips = 1000;
//	p_vec[4]->chips_in_table_ = 0;
//	p_vec[4]->cur_bet_chips_ = all_in;
//	p_vec[4]->game_status_ = GAME_STATUS_ALL_IN;
//	chips_vec.push_back(all_in);
//	chips_record_vec.push_back(all_in);
//
//	all_in = 240;
//	//total_chips+=all_in;
//	p_vec[5]->base_info_.total_chips = 1000;
//	p_vec[5]->chips_in_table_ = 0;
//	p_vec[5]->cur_bet_chips_ = all_in;
//	p_vec[5]->game_status_ = GAME_STATUS_ALL_IN;
//	chips_vec.push_back(all_in);
//	chips_record_vec.push_back(all_in);
//
//	all_in = 520;
//	//total_chips+=all_in;
//	p_vec[6]->base_info_.total_chips = 1000;
//	p_vec[6]->chips_in_table_ = 0;
//	p_vec[6]->cur_bet_chips_ = all_in;
//	p_vec[6]->game_status_ = GAME_STATUS_ALL_IN;
//	//chips_vec.push_back(all_in);
//	chips_record_vec.push_back(all_in);
//
//	all_in = 530;
//	//total_chips+=all_in;
//	p_vec[7]->base_info_.total_chips = 1000;
//	p_vec[7]->chips_in_table_ = 0;
//	p_vec[7]->cur_bet_chips_ = all_in;
//	//chips_vec.push_back(all_in);
//	//p_vec[7]->game_status_ = GAME_STATUS_ALL_IN;
//	chips_record_vec.push_back(all_in);
//
//	Player *player = NULL;
//	chips_pool.clear();
//	int total_chips = 0;
//
//	if (chips_vec.size() > 0)
//	{
//		std::sort(chips_vec.begin(), chips_vec.end(), Table::cmp_chips);
//		for (int j = 0; j < (int) chips_vec.size(); j++)
//		{
//			int cur_all_in = chips_vec[j]; //当前all in 值
//			int all_in_level =
//					(j > 0) ? (cur_all_in - chips_vec[j - 1]) : cur_all_in; //all in 等级差
//
//			ChipsPool pool;
//			for (int i = 0; i < 8; i++)
//			{
//				int chips = chips_record_vec[i];
//				bool count_in =(j > 0) ? (chips > chips_vec[j - 1]) : (chips > 0);
//				if (count_in)
//				{
//					int player_chips = all_in_level;
//					if (chips <= cur_all_in)
//					{
//						player_chips =(j <= 0) ? (chips) : (chips - chips_vec[j - 1]);
//					}
//					player = p_vec[i];
//					if (player->is_in_game())
//					{
//						pool.player_vec_.push_back(player);
//					}
//					pool.total_chips += player_chips;
//				}
//			}
//			if (pool.total_chips <= 0)
//			{
//				continue;
//			}
//			total_chips += pool.total_chips;
//			chips_pool.push_back(pool);
//		}
//	}
//
//	{
//		int total_chips = 0;
//		ChipsPool pool;
//		for (int i = 0; i < 8; i++)
//		{
//			player = p_vec[i];
//			if (chips_vec.size()>0 && chips_record_vec[i] <= chips_vec[chips_vec.size() - 1])
//			{
//				continue;
//			}
//			total_chips += chips_vec.size()>0?(chips_record_vec[i]- chips_vec[chips_vec.size()-1]):chips_record_vec[i];
//			if (player->is_in_game())
//			{
//				pool.player_vec_.push_back(player);
//			}
//		}
//		pool.total_chips = total_chips;
//		chips_pool.push_back(pool);
//	}
//
//	int real_total = 0;
//	for (int i = 0; i < 8; i++)
//	{
//		player = p_vec[i];
//		real_total += chips_record_vec[i];
//	}
//
//	for(int j=0;j<(int)chips_pool.size();j++)
//	{
//		ChipsPool &pool =chips_pool[j];
//		printf("poolid:[%d] poolchips:%d,realchips:%d,pool:%d,all_in:%d player:%d\n",
//				j+1,total_chips,real_total,pool.total_chips,chips_vec[j],(int)pool.player_vec_.size());
//		for(int i=0;i<(int)pool.player_vec_.size();i++)
//		{
//			std::cout<<pool.player_vec_[i]->role_id()<<"--";
//		}
//		std::cout<<std::endl;
//	}
//	chips_vec.clear();
//
//}
//
//bool is_bet_end()
//{
//	ChipsPoolVec chips_pool;
//		IntVector chips_vec;
//		std::vector<Player*> p_vec;
//		for(int i=1;i<=8;i++)
//		{
//			Player *p = new Player();
//			p->role_id(i);
//			p_vec.push_back(p);
//		}
//		int total_chips=0;
//		int all_in = 190;
//		total_chips+=all_in;
//		p_vec[0]->base_info_.total_chips = 1000;
//		p_vec[0]->chips_in_table_ = 0;
//		p_vec[0]->cur_bet_chips_ = all_in;
//		p_vec[0]->game_status_ = GAME_STATUS_ALL_IN;
//
//		all_in = 200;
//		total_chips+=all_in;
//		p_vec[1]->base_info_.total_chips = 1000;
//		p_vec[1]->chips_in_table_ = 0;
//		p_vec[1]->cur_bet_chips_ = all_in;
//		p_vec[1]->game_status_ = GAME_STATUS_ALL_IN;
//
//		all_in = 250;
//		total_chips+=all_in;
//		p_vec[2]->base_info_.total_chips = 1000;
//		p_vec[2]->chips_in_table_ = 0;
//		p_vec[2]->cur_bet_chips_ = all_in;
//		p_vec[2]->game_status_ = GAME_STATUS_ALL_IN;
//
//		all_in = 100;
//		total_chips+=all_in;
//		p_vec[3]->base_info_.total_chips = 1000;
//		p_vec[3]->chips_in_table_ = 0;
//		p_vec[3]->cur_bet_chips_ = all_in;
//		//p_vec[3]->game_status_ = GAME_STATUS_ALL_IN;
//
//		all_in = 530;
//		total_chips+=all_in;
//		p_vec[4]->base_info_.total_chips = 1000;
//		p_vec[4]->chips_in_table_ = 0;
//		p_vec[4]->cur_bet_chips_ = all_in;
//		//p_vec[4]->game_status_ = GAME_STATUS_ALL_IN;
//
//		all_in = 240;
//		total_chips+=all_in;
//		p_vec[5]->base_info_.total_chips = 1000;
//		p_vec[5]->chips_in_table_ = 0;
//		p_vec[5]->cur_bet_chips_ = all_in;
//		p_vec[5]->game_status_ = GAME_STATUS_ALL_IN;
//
//		all_in = 530;
//		total_chips+=all_in;
//		p_vec[6]->base_info_.total_chips = 1000;
//		p_vec[6]->chips_in_table_ = 0;
//		p_vec[6]->cur_bet_chips_ = all_in;
//		//p_vec[6]->game_status_ = GAME_STATUS_FOLD;
//
//
//		all_in = 530;
//		total_chips+=all_in;
//		p_vec[7]->base_info_.total_chips = 1000;
//		p_vec[7]->chips_in_table_ = 0;
//		p_vec[7]->cur_bet_chips_ = all_in;
//		//chips_vec.push_back(all_in);
//		//p_vec[7]->game_status_ = GAME_STATUS_ALL_IN;
//
//	int cur_max_bet = 530;
//	Player *player = NULL;
//	for (int i = 0; i < 8; i++)
//	{
//		player = p_vec[i];
//		if(NULL!=player && !player->is_fold() && !player->is_all_in())
//		{
//			 if(player->cur_bet_chips_< cur_max_bet)
//			 {
//				 std::cout << "===not end=="<<std::endl;
//				 return false;
//			 }
//		}
//	}
//	std::cout << "===end==="<<std::endl;
//	return true;
//}
//
//
//
//#endif//ProkerTest_CPP
